package com.qf.taobei.mapper;


import com.qf.taobei.entity.Comment;
import com.qf.taobei.entity.Order;
import com.qf.taobei.entity.OrderProduct;
import com.qf.taobei.entity.Store;
import com.qf.taobei.entity.vo.OrderDetailsVo;
import com.qf.taobei.entity.vo.StoreOrderVo;
import com.qf.taobei.entity.vo.ViewOrderDetails;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;


/**
 * @author 吴彦祖
 */
@Repository
public interface OrderMapper {
    /**
     *用户通过（订单编号）查询某个订单
     */
    List<Order> selectOrderByOrderNumber(@Param("uid") Integer uid,@Param("orderNumber") String orderNumber);

    /**
     * 管理员搜索功能
     * @param orderNumber
     * @return
     */
    List<Order> queryOrderByOrderNumber(String orderNumber);
    /**
     * 通过用户id查询用户订单列表
     * @param userId
     * @return
     */
    List<Order> selectOrderListByUserId(Integer userId);

    /**
     * 通过订单编号查询订单详情
     */
    List<OrderDetailsVo> selectOrderDetailsByOrderId(Integer orderId);
    /**
     * 修改订单 /用户删除订单（伪删除）/铺删除订单（伪删除）
     */
    Integer updeteOrderByOrderId(Order order);
    /**
     * 添加订单
     */
    Integer addOrderByUserId(Order order);
    /**
     * 添加商品进订单
     */
    Integer addProductInOrder(OrderProduct orderProduct);
    /**

    /**
     * 查询店铺所有订单
     */
    List<StoreOrderVo> selectAllOrderByStoreId(Integer storeId);
    /**
     * 真删除订单
     */
    Integer delOrder(String orderNumber);

    //根据订单id查询订单中商品信息以及商品所属店铺信息
    List<ViewOrderDetails> queryOrderDetailsByOrderId(Integer id);

    /*
     * 查询所有订单
     * */
    List<Order> getOrderList();
    /*模糊查询店铺订单*/
    List<StoreOrderVo> selectOrderNumberLikeByStore(@Param("id") Integer storeId,@Param("orderNumber") String orderNumber);

    /**
     * 订单编号查询订单详情
     * @param orderNumber
     * @return
     */
    OrderDetailsVo selectOrderDetailsByOrderNumber(String orderNumber);
    /**
     * 卖家查询其所管理的全部店的所有订单
     */
    List<OrderDetailsVo> selectAllStoreOrderByUserId(Integer userId);
//    List<StoreOrderVo> selectOrderNumberLikeByStore(String orderNumber);

    //根据订单状态查询用户所有订单
    List<Order> getOrderListByStatus(@Param("uid") Integer id, @Param("status") Integer status);

    Integer deleteOrderByOrderId(Integer id);
}
